home *** CD-ROM | disk | FTP | other *** search
/ The Sunday Times: The Month 2004 October / The Sunday Times - The Month 2004-10.iso / pc / assets / bespoke / kids / code / code_message.swf / scripts / frame_1 / DoAction.as
Text File  |  2004-09-06  |  14KB  |  429 lines

  1. _global.MorseCode = new Object();
  2. MorseCode._tl = this;
  3. MorseCode.morseMessageRefs = new Array();
  4. MorseCode.arrIntervals = new Array();
  5. MorseCode.morseMessage = new Array();
  6. MorseCode.currentMorseLetter = new Array();
  7. MorseCode.tilesOnStage = new Array();
  8. MorseCode.numLettersInMessage = 0;
  9. MorseCode.currentMorseLetterSnd = 0;
  10. MorseCode.playLetterCount = 0;
  11. MorseCode.dotSndLen = 79;
  12. MorseCode.sndStartTime;
  13. MorseCode.sndDuration;
  14. MorseCode.totalTileCount = 0;
  15. MorseCode.maxRoundTiles = 27;
  16. MorseCode.tileDepth = 100;
  17. MorseCode.tileBaseX = 12;
  18. MorseCode.tileBaseY = 280;
  19. MorseCode.colCount = 0;
  20. MorseCode.rowCount = 0;
  21. MorseCode.numRows = 5;
  22. MorseCode.numCols = 10;
  23. MorseCode.tilePosIncX = 35;
  24. MorseCode.tilePosIncY = 35;
  25. MorseCode.soundPlaying = false;
  26. MorseCode.xInit = 10;
  27. MorseCode.yInit = 40;
  28. MorseCode.xPos = 10;
  29. MorseCode.yPos = 40;
  30. MorseCode.counter = 0;
  31. theDepth = 999;
  32. MorseCode.keyLimit = false;
  33. MorseCode.lastLetter = new Array();
  34. this.onUnload = function()
  35. {
  36.    var _loc1_ = 0;
  37.    while(_loc1_ < MorseCode.arrIntervals.length)
  38.    {
  39.       clearInterval(MorseCode.arrIntervals[_loc1_]);
  40.       _loc1_ = _loc1_ + 1;
  41.    }
  42.    delete MorseCode;
  43.    this.unloadMovie();
  44. };
  45. MorseCode.arrMorseCodeAlphabet = {a:"letterA",b:"letterB",c:"letterC",d:"letterD",e:"letterE",f:"letterF",g:"letterG",h:"letterH",i:"letterI",j:"letterJ",k:"letterK",l:"letterL",m:"letterM",n:"letterN",o:"letterO",p:"letterP",q:"letterQ",r:"letterR",s:"letterS",t:"letterT",u:"letterU",v:"letterV",w:"letterW",x:"letterX",y:"letterY",z:"letterZ",┬ºnull┬º:"letterNull"};
  46. MorseCode.arrMorseNumRef = ["zero","one","two","three","four","five","six","seven","eight","nine"];
  47. MorseCode.arrTileIDs = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","null","","three","four","five","six","seven","eight","nine","zero","fullstop","comma","questionmark","colon","semicolon"];
  48. MorseCode.arrEnglishAlphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","null","2","3","4","5","6","7","8","9","0",".",",","?",":",";"];
  49. MorseCode.convertToMorseCode = function(str)
  50. {
  51.    var _loc2_ = str;
  52.    trace("--------------------------------------------");
  53.    trace("convertToMorseCode()");
  54.    trace("str: " + _loc2_);
  55.    MorseCode.morseMessageRefs = [];
  56.    MorseCode.playLetterCount = 0;
  57.    i = 0;
  58.    while(i < _loc2_.length)
  59.    {
  60.       var _loc1_ = _loc2_.charCodeAt(i);
  61.       if(_loc1_ == 32)
  62.       {
  63.          _loc1_ = "space";
  64.       }
  65.       else if(_loc1_ >= 48 && _loc1_ <= 57)
  66.       {
  67.          _loc1_ = MorseCode.arrMorseNumRef[String.fromCharCode(_loc1_)];
  68.       }
  69.       else if(_loc1_ == 46)
  70.       {
  71.          _loc1_ = "fullstop";
  72.       }
  73.       else if(_loc1_ == 44)
  74.       {
  75.          _loc1_ = "comma";
  76.       }
  77.       else if(_loc1_ == 59)
  78.       {
  79.          _loc1_ = "semicolon";
  80.       }
  81.       else if(_loc1_ == 58)
  82.       {
  83.          _loc1_ = "colon";
  84.       }
  85.       else if(_loc1_ == 63)
  86.       {
  87.          _loc1_ = "questionmark";
  88.       }
  89.       else
  90.       {
  91.          _loc1_ = String.fromCharCode(_loc1_);
  92.       }
  93.       MorseCode.morseMessageRefs.push(_loc1_);
  94.       i++;
  95.    }
  96.    MorseCode.showMorseMessage();
  97. };
  98. MorseCode.playMorseMessage = function()
  99. {
  100.    trace("--------------------------------------------");
  101.    trace("playMorseMessage()");
  102.    if(MorseCode.playLetterCount < MorseCode.morseMessageRefs.length)
  103.    {
  104.       MorseCode.playMorseLetter();
  105.    }
  106.    else
  107.    {
  108.       MorseCode.soundPlaying = false;
  109.    }
  110.    trace("--------------------------------------------");
  111. };
  112. MorseCode.playMorseLetter = function(tile, dowbleth)
  113. {
  114.    var _loc2_ = tile;
  115.    trace("--------------------------------------------");
  116.    trace("playMorseLetter()");
  117.    if(_loc2_ == undefined)
  118.    {
  119.       var _loc1_ = 0;
  120.       while(_loc1_ < MorseCode.tilesOnStage.length)
  121.       {
  122.          if(MorseCode.tilesOnStage[_loc1_].ID == MorseCode.morseMessageRefs[MorseCode.playLetterCount].toLowerCase())
  123.          {
  124.             MorseCode.hiliteTile(MorseCode.tilesOnStage[_loc1_].letterTileBg);
  125.             MorseCode.tileToRestore = MorseCode.tilesOnStage[_loc1_];
  126.          }
  127.          _loc1_ = _loc1_ + 1;
  128.       }
  129.       if(MorseCode.morseMessageRefs[MorseCode.playLetterCount] == "space")
  130.       {
  131.          MorseCode.playPause(7);
  132.       }
  133.       else
  134.       {
  135.          MorseCode.playSound(MorseCode.morseMessageRefs[MorseCode.playLetterCount]);
  136.       }
  137.       MorseCode.playLetterCount = MorseCode.playLetterCount + 1;
  138.    }
  139.    else if(MorseCode.soundPlaying == false)
  140.    {
  141.       MorseCode.playSound(_loc2_.ID,_loc2_);
  142.       if(!dowbleth)
  143.       {
  144.          MorseCode.showMorseMessage(_loc2_.ID);
  145.       }
  146.       else
  147.       {
  148.          MorseCode.showMorseMessage("dowbleth");
  149.          trace("hit me with a dowbleth");
  150.       }
  151.       MorseCode.soundPlaying = true;
  152.       MorseCode.tileToRestore = _loc2_;
  153.    }
  154.    trace("--------------------------------------------");
  155. };
  156. MorseCode.playSound = function(snd, tile)
  157. {
  158.    MorseCode.sndStartTime = getTimer();
  159.    MorseCode.sndDuration = MorseCode._tl[snd + "_snd"].duration;
  160.    trace("tile to highlight: " + tile);
  161.    MorseCode._tl[snd + "_snd"].start();
  162.    sndID = setInterval(MorseCode.monitorSound,10,0);
  163.    MorseCode.arrIntervals.push(sndID);
  164. };
  165. MorseCode.playPause = function(m)
  166. {
  167.    MorseCode.sndStartTime = getTimer();
  168.    MorseCode.sndDuration = MorseCode.dotSndLen * m;
  169.    sndID = setInterval(MorseCode.monitorSound,10,1);
  170.    MorseCode.arrIntervals.push(sndID);
  171. };
  172. MorseCode.isEndOfMessage = function()
  173. {
  174.    if(MorseCode.playLetterCount == MorseCode.morseMessageRefs.length)
  175.    {
  176.       trace("tileToRestore: " + MorseCode.tileToRestore);
  177.       MorseCode.assignEvents(MorseCode.tileToRestore);
  178.       MorseCode.soundPlaying = false;
  179.       return true;
  180.    }
  181.    return false;
  182. };
  183. MorseCode.monitorSound = function(soundOrPause, tile)
  184. {
  185.    var _loc1_ = getTimer();
  186.    if(soundOrPause == 0)
  187.    {
  188.       if(_loc1_ >= MorseCode.sndStartTime + MorseCode.sndDuration)
  189.       {
  190.          MorseCode.deleteInterval(sndID);
  191.          if(MorseCode.isEndOfMessage() == false)
  192.          {
  193.             MorseCode.playPause(3);
  194.          }
  195.       }
  196.    }
  197.    else if(_loc1_ >= MorseCode.sndStartTime + MorseCode.sndDuration)
  198.    {
  199.       MorseCode.deleteInterval(sndID);
  200.       MorseCode.playMorseMessage();
  201.    }
  202. };
  203. MorseCode.showMorseMessage = function(l)
  204. {
  205.    trace("--------------------------------------------");
  206.    trace("showMorseMessage()");
  207.    if(l == "one")
  208.    {
  209.       MorseCode.xPos += 30;
  210.    }
  211.    else if(l == "dowbleth")
  212.    {
  213.       attachMovie("letterDowbleth","clip" + MorseCode.counter,theDepth++);
  214.       clipToEffect = eval("clip" + MorseCode.counter);
  215.       clipToEffect._x = MorseCode.xPos;
  216.       clipToEffect._y = MorseCode.yPos;
  217.       MorseCode.xPos += clipToEffect._width;
  218.    }
  219.    else
  220.    {
  221.       attachMovie(MorseCode.arrMorseCodeAlphabet[l],"clip" + MorseCode.counter,theDepth++);
  222.       clipToEffect = eval("clip" + MorseCode.counter);
  223.       clipToEffect._x = MorseCode.xPos;
  224.       clipToEffect._y = MorseCode.yPos;
  225.       MorseCode.xPos += clipToEffect._width;
  226.    }
  227.    if(MorseCode.xPos > 310)
  228.    {
  229.       MorseCode.xPos = MorseCode.xInit;
  230.       MorseCode.YPos += 30;
  231.       if(MorseCode.YPos > 180)
  232.       {
  233.          MorseCode.keyLimit = true;
  234.       }
  235.    }
  236.    MorseCode.counter = MorseCode.counter + 1;
  237.    trace("--------------------------------------------");
  238. };
  239. MorseCode.reset = function()
  240. {
  241.    MorseCode._tl.message_txt.text = "";
  242.    MorseCode._tl.morseCodeMessage = "";
  243.    var i = 0;
  244.    while(i < MorseCode.arrIntervals.length)
  245.    {
  246.       clearInterval(MorseCode.arrIntervals[i]);
  247.       i++;
  248.    }
  249.    var i = 0;
  250.    while(i < MorseCode.counter)
  251.    {
  252.       clipToEffect = eval("clip" + i);
  253.       removeMovieClip(clipToEffect);
  254.       i++;
  255.    }
  256.    MorseCode.counter = 0;
  257.    MorseCode.xPos = MorseCode.xInit;
  258.    MorseCode.yPos = MorseCode.yInit;
  259.    MorseCode.keyLimit = false;
  260.    MorseCode.arrIntervals = [];
  261.    stopAllSounds();
  262.    MorseCode.soundPlaying = false;
  263. };
  264. MorseCode.addTile = function()
  265. {
  266.    var _loc1_ = MorseCode.totalTileCount;
  267.    if(MorseCode.totalTileCount == MorseCode.maxRoundTiles)
  268.    {
  269.       MorseCode._tl["letterTile" + _loc1_]._x = MorseCode.tileBaseX + MorseCode.tilePosIncX * MorseCode.colCount;
  270.       MorseCode._tl["letterTile" + _loc1_]._y = MorseCode.tileBaseY + MorseCode.tilePosIncY * MorseCode.rowCount;
  271.       MorseCode._tl["letterTile" + _loc1_].ID = MorseCode.arrTileIDs[MorseCode.totalTileCount];
  272.       MorseCode._tl["letterTile" + _loc1_].index = MorseCode.totalTileCount;
  273.       MorseCode.assignEvents(MorseCode._tl["letterTile" + _loc1_].letterTileBg);
  274.       MorseCode.tilesOnStage.push(MorseCode._tl["letterTile" + _loc1_]);
  275.       MorseCode._tl.gotoAndPlay("resume");
  276.       clearInterval(addTileID);
  277.    }
  278.    else
  279.    {
  280.       MorseCode._tl.letterTile.duplicateMovieClip("letterTile" + _loc1_,MorseCode.tileDepth + MorseCode.totalTileCount);
  281.       MorseCode._tl["letterTile" + _loc1_]._x = MorseCode.tileBaseX + MorseCode.tilePosIncX * MorseCode.colCount;
  282.       MorseCode._tl["letterTile" + _loc1_]._y = MorseCode.tileBaseY + MorseCode.tilePosIncY * MorseCode.rowCount;
  283.       if(MorseCode.arrEnglishAlphabet[_loc1_] != "null")
  284.       {
  285.          MorseCode._tl["letterTile" + _loc1_].letter_txt.text = MorseCode.arrEnglishAlphabet[_loc1_];
  286.       }
  287.       else
  288.       {
  289.          MorseCode._tl["letterTile" + _loc1_].letter_txt.html = true;
  290.          MorseCode._tl["letterTile" + _loc1_].letter_txt._y += 4;
  291.          MorseCode._tl["letterTile" + _loc1_].letter_txt._x -= 1;
  292.          var _loc2_ = new TextFormat();
  293.          _loc2_.size = "16";
  294.          MorseCode._tl["letterTile" + _loc1_].letter_txt.htmlText = "null";
  295.          MorseCode._tl["letterTile" + _loc1_].letter_txt.setTextFormat(_loc2_);
  296.       }
  297.       MorseCode._tl["letterTile" + _loc1_].ID = MorseCode.arrTileIDs[MorseCode.totalTileCount];
  298.       MorseCode._tl["letterTile" + _loc1_].index = MorseCode.totalTileCount;
  299.       MorseCode.assignEvents(MorseCode._tl["letterTile" + _loc1_].letterTileBg);
  300.       MorseCode.tilesOnStage.push(MorseCode._tl["letterTile" + _loc1_]);
  301.       MorseCode.colCount = MorseCode.colCount + 1;
  302.       if(MorseCode.colCount == MorseCode.numCols)
  303.       {
  304.          MorseCode.rowCount = MorseCode.rowCount + 1;
  305.          if(!(MorseCode.colCount == MorseCode.numCols && MorseCode.rowCount == MorseCode.numRows))
  306.          {
  307.             MorseCode.colCount = 0;
  308.          }
  309.       }
  310.    }
  311.    MorseCode.totalTileCount = MorseCode.totalTileCount + 1;
  312. };
  313. MorseCode.tileRollover = function()
  314. {
  315.    myCol = new Color(this);
  316.    myCol.setRGB(16041153);
  317. };
  318. MorseCode.tileRollout = function()
  319. {
  320.    myCol = new Color(this);
  321.    myCol.setRGB(15304833);
  322. };
  323. MorseCode.tilePress = function()
  324. {
  325.    var _loc2_ = this;
  326.    if(MorseCode.keyLimit == false)
  327.    {
  328.       MorseCode.hiliteTile(_loc2_);
  329.       MorseCode.lastLetter.push(_loc2_._parent.letter_txt.text);
  330.       if(MorseCode.lastLetter.length > 2)
  331.       {
  332.          MorseCode.lastLetter.splice(0,1);
  333.       }
  334.       if(MorseCode.lastLetter[0] == MorseCode.lastLetter[1])
  335.       {
  336.          trace("DUPLICATE LETTER!");
  337.          MorseCode.lastLetter.splice(0,2);
  338.          MorseCode.playMorseLetter(_loc2_._parent,1);
  339.       }
  340.       else
  341.       {
  342.          MorseCode.playMorseLetter(_loc2_._parent);
  343.       }
  344.       var _loc1_ = _loc2_._parent.letter_txt.text;
  345.       if(_loc1_ == "SPACE")
  346.       {
  347.          _loc1_ = " ";
  348.       }
  349.       if(_loc1_ == "null")
  350.       {
  351.          _loc1_ = "";
  352.       }
  353.       if(_loc1_ == "J" || _loc1_ == "V" || _loc1_ == "W")
  354.       {
  355.          if(error_message._x == undefined)
  356.          {
  357.             attachMovie("error_message","error_message",theDepth++,{_x:391,_y:143});
  358.          }
  359.       }
  360.       else
  361.       {
  362.          error_message.removeMovieClip();
  363.       }
  364.       MorseCode._tl.message_txt.text += _loc1_;
  365.    }
  366. };
  367. MorseCode.hiliteTile = function(mc)
  368. {
  369.    var _loc1_ = mc;
  370.    delete _loc1_.onRollOver;
  371.    delete _loc1_.onRollOut;
  372.    delete _loc1_.onReleaseOutside;
  373.    myCol = new Color(_loc1_);
  374.    myCol.setRGB(14824750);
  375. };
  376. MorseCode.assignEvents = function(mc)
  377. {
  378.    var _loc1_ = mc;
  379.    _loc1_.onRollOver = MorseCode.tileRollover;
  380.    _loc1_.onReleaseOutside = _loc1_.onRollOut = MorseCode.tileRollout;
  381.    _loc1_.onPress = MorseCode.tilePress;
  382.    MorseCode.changeObjCol(_loc1_,15304833);
  383. };
  384. MorseCode.changeObjCol = function(mc, col)
  385. {
  386.    myCol = new Color(mc);
  387.    myCol.setRGB(col);
  388. };
  389. MorseCode.deleteInterval = function(i)
  390. {
  391.    trace("-------------------------------------------");
  392.    trace("deleteInterval()");
  393.    clearInterval(i);
  394.    if(MorseCode.tileToRestore != null)
  395.    {
  396.       MorseCode.soundPlaying = false;
  397.       MorseCode.assignEvents(MorseCode.tileToRestore.letterTileBg);
  398.       trace("MorseCode.tileToRestore: " + MorseCode.tileToRestore);
  399.       MorseCode.tileToRestore = null;
  400.    }
  401.    trace("-------------------------------------------");
  402. };
  403. MorseCode.goto = function(dest)
  404. {
  405.    var _loc2_ = MorseCode.tilesOnStage.length;
  406.    var _loc1_ = 0;
  407.    MorseCode._tl.morseCodeMessage = "";
  408.    MorseCode._tl.message_txt.text = "";
  409.    while(_loc1_ < _loc2_)
  410.    {
  411.       MorseCode.tilesOnStage[_loc1_].removeMovieClip();
  412.       _loc1_ = _loc1_ + 1;
  413.    }
  414.    _loc1_ = 0;
  415.    while(_loc1_ < MorseCode.arrIntervals.length)
  416.    {
  417.       clearInterval(MorseCode.arrIntervals[_loc1_]);
  418.       _loc1_ = _loc1_ + 1;
  419.    }
  420.    MorseCode.arrIntervals = [];
  421.    MorseCode.tilesOnStage = [];
  422.    MorseCode._tl.gotoAndPlay(dest);
  423. };
  424. var myListener = new Object();
  425. myListener.onKeyDown = function()
  426. {
  427.    trace(Key.getAscii());
  428. };
  429.